package com.vae.canal.listener;

import com.alibaba.fastjson.JSON;
import com.vae.mall.goods.api.entity.Sku;
import com.vae.page.feign.PageFeign;
import com.vae.search.feign.SkuSearchFeign;
import com.vae.search.model.SkuEs;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import top.javatool.canal.client.annotation.CanalTable;
import top.javatool.canal.client.handler.EntryHandler;

/**
 * sku表监听器，当数据发生改变的时候同步更新es
 */
@CanalTable(value = "sku")
@Component
public class SkuHandler implements EntryHandler<Sku> {

    @Autowired
    private SkuSearchFeign skuSearchFeign;

    @Autowired
    private PageFeign pageFeign;
    /***
     * 增加产品
     * @param sku
     */
    @SneakyThrows
    @Override
    public void insert(Sku sku) {
        if(sku.getStatus().intValue()==1){
            //导入索引
            // 将sku转为JSON，再讲JSON转为SKUES
            skuSearchFeign.add(JSON.parseObject(JSON.toJSONString(sku), SkuEs.class));
        }
        //生成静态页
        pageFeign.html(sku.getSpuId());
    }

    /***
     * 修改
     * @param before
     * @param after
     */
    @SneakyThrows
    @Override
    public void update(Sku before, Sku after) {
        if(after.getStatus().intValue()==2||after.getStatus().intValue()==3){
            // 如果下架或者删除了，删除索引
            skuSearchFeign.del(after.getId());
        }else{
            // 更新
            skuSearchFeign.add(JSON.parseObject(JSON.toJSONString(after), SkuEs.class));
        }
        //生成静态页
        pageFeign.html(after.getSpuId());
    }

    /***
     *删除
     * @param sku
     */
    @SneakyThrows
    @Override
    public void delete(Sku sku) {
        skuSearchFeign.del(sku.getId());
        //生成静态页
        pageFeign.html(sku.getSpuId());
    }
}